package com.alibaba.citrus.ots.price.sdk;

import com.alibaba.citrus.ots.price.dto.request.activity.ParticipateActivityRequest;
import com.alibaba.citrus.ots.price.dto.request.activity.ActivityDetailQueryViewRequest;
import com.alibaba.citrus.ots.price.dto.request.activity.ActivityQueryViewRequest;
import com.alibaba.citrus.ots.price.dto.request.activity.ActivityUseDetailQueryViewRequest;
import com.alibaba.citrus.ots.price.dto.request.activity.SegmentedDetailQueryViewRequest;
import com.alibaba.citrus.ots.price.dto.request.activity.QueryActivityRequest;
import com.alibaba.citrus.ots.price.dto.response.activity.*;
import com.alibaba.cz.base.tool.page.PageResult;
import com.alibaba.lattice2.epoch.meshflow.model.annotation.MeshFlowService;
import com.alibaba.lattice2.epoch.sdk.model.Result;

import java.util.List;

/**
 * @author hanguo
 * @date 2021/10/15
 * @Description 营销活动查询接口
 */
@MeshFlowService(apps = {"bc_ots"}, name = "ActivityQueryService")
public interface ActivityQueryService {


    /**
     * 营销活动列表查询接口
     * @param request
     * @return
     */
    PageResult<List<ActivityViewResponse>> queryPromotionPageList(ActivityQueryViewRequest request);

    /**
     * 查询组织信息，为组织下拉框提供的接口，数据结构[{"table":"组织1","value":"organization1"}]
     * @return
     */
    Result<List<ActivityOptionViewResponse>> queryOrganization();

    /**
     * 查询渠道信息，为渠道下拉框提供的接口，数据结构[{"table":"渠道1","value":"channel1"}]
     * @return
     */
    Result<List<ActivityOptionViewResponse>> queryChannel();

    /**
     * 营销活动详情查询接口
     * @param request
     * @return
     */
    PageResult<List<ActivityTermViewResponse>> queryPromotionDetailPageList(ActivityDetailQueryViewRequest request);

    /**
     * 坎级活动详情查询接口
     * @param request
     * @return
     */
    PageResult<List<SegmentedDetailViewResponse>> querySegmentDetailPageList(SegmentedDetailQueryViewRequest request);

    /**
     * 活动使用详情查询接口
     * @param request
     * @return
     */
    PageResult<List<ActivityUseDetailViewResponse>> queryPromotionUsedDetailPageList(ActivityUseDetailQueryViewRequest request);

    /**
     * 批量查询可参加的活动列表
     * @param request
     * @return
     */
    Result<ActivityResponse> batchQueryCanUsingActivity(QueryActivityRequest request);

    /**
     * 校验已参加的活动
     * @param checkRequest
     * @return
     */
    Result<CheckActivityResponse> checkActivity(ParticipateActivityRequest checkRequest);


}
